package com.mall.b2c.hessian;

import com.mall.common.hessian.BaseHessian;

import java.util.Map;

public interface GoodsHessian extends BaseHessian {
	
	/**
	 * 获取商品分类
	 * @param catIds 分类id
	 * @param isVisible 是否前台显示
	 * @param parentId 父分类id
	 * @param isRecommend 是否推荐
	 * @param num 数量
	 * @return
	 */
	String getGoodsCategoryList(Long[] catIds, Boolean isVisible, Long parentId, Boolean isRecommend, Integer num, String orderBy);
	
	/**
	 * 获取指定分类的父分类
	 * @param catId 分类id
	 * @return
	 */
	String getCoodsCategoryParent(Long catId);
	
	/**
	 * 获取指定分类
	 * @param catId 分类id
	 * @return
	 */
	String getCoodsCategory(Long catId);
	
	/**
	 * 通过指定条件查找商品分页数据
	 * @param goodsCategoryIds 商品分类ids
	 * @param goodsCategoryCodes 商品分类codes
	 * @param brandId 品牌id
	 * @param tagIds 标签ids
	 * @param providerIds 提供商ids
	 * @param page 当前页码
	 * @param size 分页大小
	 * @return
	 */
	String findPagerData(Long memberId, Long[] goodsCategoryIds, String[] goodsCategoryCodes, Long brandId,
						 Long[] tagIds, Long[] providerIds, Long storeId, Integer page, Integer size);
	
	
	/**
	 * 获取商品数据
	 * @param id 商品id
	 * @param memberId 帐号id
	 * @return
	 */
	String getGoodsData(Long id, String code, Long memberId);
	
	/**
	 * 获取商品购买记录
	 * @param goodsId
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	String getGoodsBuyRecords(Long goodsId, Integer pageNumber, Integer pageSize);
	
	/**
	 * 获取商品详情页数据
	 * @param id 商品id
	 * @param code 商品编码
	 * @param memberId 会员id
	 * @return
	 */
	String getGoodsDetail(Long id, String code, Long memberId);
	
	/**
	 * 获取商品列表页
	 * @param uri
	 * @param keyword
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	String list(String uri, String keyword, Long memberId, Long storeId,Integer pageNumber, Integer pageSize, String pluginBundle);
	
	/**
	 * 获取商品列表数据
	 * @param goodsCategoryId
	 * @param goodsCategoryCode
	 * @param brandId
	 * @param tagId
	 * @param count
	 * @param hasStock
	 * @param orderBy
	 * @return
	 */
	String getGoodsListData(Long goodsCategoryId, String goodsCategoryCode,
							Long brandId, Long tagId, Integer count, Boolean hasStock, String orderBy, Long memberId, Long storeId);
	
	/**
	 * 搜索下拉提示
	 * @param keyword
	 * @return
	 */
	String getSearchTip(String keyword, Integer count);

	/**
	 * 通过Lucene查询商品分页数据
	 * @param keyword
	 * @param filterMap
	 * 					brandName 品牌名称
	 * 					categoryCode 分类code
	 *  				manufacturer 生产厂家
	 *  				drugForm  剂型
	 *  				goodsType  商品类型
	 *  				prescribeType 处方类型
	 *  				medicalInsuranceType 医保类型
	 *  				goodsSort 商品排序
	 * @return
	 */
	String searchByKeyword(
			String keyword, Map<String, String> filterMap,
			String goodsSort, Integer page, Integer size);
}
